package com.newshub.monitor.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 监控模块配置属性
 * 自动继承日志存储配置，确保日志写入和监控读取路径一致
 */
@Data
@Component
@ConfigurationProperties(prefix = "logging.monitor")
public class MonitorProperties {
    
    /**
     * 监控功能开关
     */
    private boolean enabled = true;
    
    /**
     * 监控数据保留天数
     */
    private int retentionDays = 30;
    
    /**
     * 监控数据采集间隔（秒）
     */
    private int collectInterval = 60;
    
    /**
     * 日志文件路径（自动从日志存储配置继承）
     * 通过YAML的${logging.storage.file.path}引用
     */
    private String logPath;
    
    /**
     * 日志文件前缀（自动从日志存储配置继承）
     * 通过YAML的${logging.storage.file.prefix}引用
     */
    private String logPrefix;
    
    /**
     * 日志文件格式（自动从日志存储配置继承）
     * 通过YAML的${logging.storage.file.format}引用
     */
    private String logFormat;
    
    /**
     * 获取当前日志文件路径
     */
    public Path getCurrentLogFilePath() {
        return Paths.get(logPath, logPrefix + ".log");
    }
    
    /**
     * 获取日志目录路径
     */
    public Path getLogDirectoryPath() {
        return Paths.get(logPath);
    }
    
    /**
     * 获取日志文件模式
     */
    public String getLogFilePattern() {
        return logPrefix + "-%d{yyyy-MM-dd}.log";
    }
    
    /**
     * 获取今日日志文件路径
     */
    public String getTodayLogFilePath() {
        String today = java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        return logPath + "/" + logPrefix + "-" + today + ".log";
    }
    
    /**
     * 检查监控功能是否启用
     */
    public boolean isMonitorEnabled() {
        return enabled;
    }
}



